var express = require("express"); //引入express 模块
var expressWs = require('express-ws');
var http = require('http')

var app = express(); //创建服务器 
const cors = require('cors')
// const fs = require('fs');
// const zlib = require('zlib');
// const compression = require('compression');  //引入compression模块
var bodyParser = require('body-parser') // node.js 中间件，用于处理 JSON, Raw, Text 和 URL 编码的数据。

var getApi = require('./router/getApi')// get请求模块
var postApi = require('./router/postApi')// get请求模块 
var websocketApi = require('./router/websocketApi')// websocketApi请求模块     
var getCaiPiaoHistortApi = require('./router/getCaiPiaoHistortApi')// getCaiPiaoHistortApi 请求模块 
var initProject = require('./init');// 初始化模块 
const { constants } = require("fs/promises");




//设置跨域访问
app.all("*", function (req, res, next) {
  console.log('<==============================================================> ')
  const data = {
    protocol: req.protocol, // http or htts
    hostname: req.hostname, // baidu.com
    ip: req.ip, // 127.0.0.1
    originalUrl: req.originalUrl, // /test
    method: req.method, // GET or POST
    baseUrl: req.baseUrl,
    path: req.path, // /test
    // route: req.route, // 路由信息
    params: req.params, // 参数{}
    body: req.body, // 请求主体，依赖body-parser 中间件
    query: req.query // 通过参数传递的 如 /test?name=1
  }

  console.log('发现一次请求: ', new Date().toLocaleString())
  console.log('请求的信息', data)
  // // 服务器允许被那些origin访问。，*或者www.example.com
  res.header("Access-Control-Allow-Origin", "*") 
  // // 预设支持的方法
  res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS, DELETE")
  // // 预检将在正式请求的headers字段中出现的首部信息，以下这些特定的首部是一直允许的：Accept, Accept-Language, Content-Language, Content-Type
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  console.log('开始next')
  next();
});


var port = 9527; //设置端口9527
var hostName = "10.0.16.8"; //设置主机名10.0.16.8


var server = http.createServer(app);
expressWs(app, server);
server.listen(port, hostName, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log(`服务器运行在http://${host}:${port}`)
  initProject()
  // let downloadPath = './public/download/test.txt'
  // let tempPath = './public/download/test.txt.gz'
  // let isExsit = fs.existsSync(tempPath);
  // console.log('zdy-----isExsit------>' + isExsit)
  // if (!isExsit) {
  //   gzip(downloadPath)
  // }
});



/****************************************************************************************************
                          网站请求信息
****************************************************************************************************/

app.use('/getApi', getApi)// getApi 请求模块
app.use('/postApi', postApi)// postApi 请求模块
app.use('/websocketApi', websocketApi)// websocketApi 请求模块    
app.use('/getCaiPiaoHistortApi', getCaiPiaoHistortApi)// getCaiPiaoHistortApi 请求模块 


app.use(bodyParser.urlencoded({ extended: true }))// 解析post提交的数据为默认方式 application/x-www-form-urlencoded
app.use(bodyParser.json());// 解析post提交的数据为json格式
app.use(express.text());// 解析post提交的数据为json格式
app.use(cors()) // 支持跨域

